package com.bitsemart.VisorVideojuego;

import android.app.DialogFragment;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.ImageView;

import com.bitsemart.BDHendrix;
import com.bitsemart.MainActivity;
import com.bitsemart.R;
import com.bitsemart.dialogos.InputTextDialogFragment;

import java.util.concurrent.ExecutionException;

/**
 * Created by Roberto on 19/04/2015.
 *
 * Se encarga de gestionar la pantalla que muestra los datos de un videojuego en modo cliente.
 */
public class EditorVideojuegoAdmin extends VisorVideojuego {
    private TextView mCabecera;
    private EditText mTitulo;
    private EditText mYear;
    private EditText mPrecio;
    private EditText mGenero;
    private EditText mDesarrollador;
    private EditText mDescripcion;
    public static ImageView mImage;
    private Button guardar;
    private int id;
    private static String image_path = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.editor_videojuego_admin);
        mCabecera = (TextView) findViewById(R.id.cabecera);
        mTitulo = (EditText) findViewById(R.id.titulo);
        mTitulo.addTextChangedListener(new TextWatcher() {
            @Override
            public void afterTextChanged(Editable arg0) {
                // No hacer nada
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // No hacer nada
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                String precio = mPrecio.getText().toString();
                if (s.length()>0 && precio.length()>0){
                    guardar.setEnabled(true);
                } else {
                    guardar.setEnabled(false);
                }
            }
        });
        mPrecio = (EditText) findViewById(R.id.precio);
        mPrecio.addTextChangedListener(new TextWatcher() {
            @Override
            public void afterTextChanged(Editable arg0) {
                // No hacer nada
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // No hacer nada
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                String titulo = mTitulo.getText().toString();
                if (s.length()>0 && titulo.length()>0){
                    if (titulo.length()==0) {
                        guardar.setEnabled(false);
                    }
                    guardar.setEnabled(true);
                } else {
                    guardar.setEnabled(false);
                }
            }
        });
        mGenero = (EditText) findViewById(R.id.genero);
        mYear = (EditText) findViewById(R.id.year);
        mDesarrollador = (EditText) findViewById(R.id.desarrollador);
        mDescripcion = (EditText) findViewById(R.id.descripcion);
        mImage = (ImageView) findViewById(R.id.imagen);
        mImage.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                DialogFragment newFragment = new InputTextDialogFragment();
                Bundle args = new Bundle();
                args.putInt("TYPE", InputTextDialogFragment.TYPE_ENTER_PATH);
                newFragment.setArguments(args);
                newFragment.show(getFragmentManager(), "Introducir Imagen");
            }
        });
        Button cerrar = (Button) findViewById(R.id.volver);
        cerrar.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                setResult(RESULT_OK);
                finish();
            }
        });
        guardar = (Button) findViewById(R.id.botonGuardar);
        guardar.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                guardarJuego();
                setResult(RESULT_OK);
                finish();
            }
        });
        String titulo = mTitulo.getText().toString();
        String precio = mPrecio.getText().toString();
        if (titulo.length()==0 || precio.length()==0) {
            guardar.setEnabled(false);
        }
        //Cargar datos
        image_path = "";// Poner vacia
        populateFields();

    }

    private void populateFields() {
        Bundle b = this.getIntent().getExtras();
        if(b!=null) {
            id = (int) b.getSerializable("ID");
            if (id>=0) mCabecera.setText("Editando juego");
            else mCabecera.setText("Creando juego");
            mTitulo.setText((String) b.getSerializable("TITULO"));
            mPrecio.setText("" + (int) b.getSerializable("PRECIO"));
            mGenero.setText((String) b.getSerializable("GENERO"));
            mDesarrollador.setText((String) b.getSerializable("DESARROLLADOR"));
            mDescripcion.setText((String) b.getSerializable("DESCRIPCION"));
            mYear.setText("" + (int) b.getSerializable("YEAR"));

            Bitmap imagen = b.getParcelable("IMAGE");
            if (imagen!=null) {
                mImage.setImageBitmap(imagen);
            }
        }
    }

    public void guardarJuego() {
        try {
            BDHendrix bdhendrix = MainActivity.getBDHendrix();
            if (id >= 0) {
                bdhendrix.modificarInfo(
                        id,
                        mTitulo.getText().toString(),
                        Integer.parseInt(mYear.getText().toString()),
                        Integer.parseInt(mPrecio.getText().toString()),
                        mGenero.getText().toString(),
                        mDesarrollador.getText().toString(),
                        mDescripcion.getText().toString());
                if (image_path.length()>0){
                    bdhendrix.modificarImagen(id, image_path);
                }
            } else {
                String path = null;
                if (image_path.length()>0)  path = image_path;
                bdhendrix.insertarJuego(mTitulo.getText().toString(),
                        Integer.parseInt(mYear.getText().toString()),
                        Integer.parseInt(mPrecio.getText().toString()),
                        mGenero.getText().toString(),
                        mDesarrollador.getText().toString(),
                        mDescripcion.getText().toString(),
                        path);
                        //"/mnt/sdcard/Pictures/Descargadas/url.jpg");
                        //"/mnt/sdcard/Pictures/Cuadros/ehdh.jpg");
                        //"/mnt/sdcard/Pictures/fero.png");
            }
            MainActivity.mostrarMensaje(this, "Juego guardado correctamente en la base de datos");
        } catch (InterruptedException e) {
            MainActivity.mostrarMensaje(this, "Error al guardar en la base de datos");
        } catch (ExecutionException e) {
            MainActivity.mostrarMensaje(this, "Error al guardar en la base de datos");
        }
    }

    public static void setImage_path(String path){
        image_path = path;
    }

    public static String getImage_path(){
        return image_path;
    }
}
